1. Field of the Invention
The present invention relates to a system and method for distributing and storing computer files.
Definitions:
Certain terms used in the Specification as well as the Claims are defined below:                1. File System: a method implemented on a computer for naming of files and the storage of file contents on either non-volatile or volatile media; file systems support hierarchical naming called Paths, and support directories, each of which may contain additional directories and files;        2. Network File System: A file system implemented on a remote computer server and accessible over a communications network using a file-based protocol; Example of two commonly used file protocols are NFS and CIFS.        3. Cloud Service Provider: a provider of remote servers accessible over a network for processing, managing and storage of data; services offered by a Cloud Service Provider may comprise one or more of Compute, Object Storage, Block Storage, and databases;        4. Cloud Provider: Same as and used interchangeably with the term Cloud Service Provider        5. Heterogeneous Service Providers: two service providers are considered heterogeneous if each has separate security controls, systems, and personnel, and does not ordinarily grant access by systems or personnel from the other service provider;        6. Object Storage: Storage of data in objects with the following attributes:                    a. no naming hierarchy or support for directories as seen in file systems            b. objects are identified with globally unique names            c. storage (PUT) or access (GET) mechanisms that are compatible with or substantially similar to those offered by any one of the following services:                            i. Amazon S3                ii. Google Cloud Storage                iii. Microsoft Cloud Storage                iv. OpenStack Object Storage                                                7. Block FEC: Any Forward Error Correction (FEC) scheme with the following attributes:                    a. has an encoder that's used at the transmitting end of a network link and accepts fixed-size blocks of bytes as input and generates as output an additional block of bytes called Parity            b. has a decoder that accepts the original input blocks and the associated parity bytes (either of which may have errored bytes due to the network transmission process) and is capable of correcting said errored bytes as long as the number of errored bytes is lower than a certain threshold. Examples of Block FEC are Reed Solomon, BCH, and LDPC.                        
2. Description of Related Art
Conventional distributed computer file systems are known for allowing different subsets of a file system to be on different computer file systems. A given file or a specific replicated instance is stored in its entirety on a single underlying disk or file system.
A conventional file system accessed from a personal computer or a workstation has files that are typically stored entirely on a single hard-disk drive or on a cluster of drives in a scheme called Redundant Array of Independent Disks (RAID). Both types of file systems are prone to data loss and security vulnerabilities due to the following reasons:                1. File data that is not backed up onto a separate drive is lost when the underlying single-drive system fails.        2. RAID systems have the ability to protect against single hard-drive failures by virtue of storing data that is replicated and striped over multiple drives, or striped and stored along with error-correction parity bytes. While the approach is more robust than single-drive systems, it has been shown that multiple disk-drive failures tend to be more frequent (somewhat negating the advantage of RAID systems) than would be expected from statistical and probabilistic analysis. The reasons for the higher-than-expected correlation in failure is the identical aging profile and similar environmental factors (such as temperature, humidity vibration and power fluctuations) experienced by the underlying physical drives when clustered in the same facility or cabinet. Traditional RAID systems employ sets of identical disks that are highly synchronized in terms of access times.        3. When file data is located in a conventional single file system, it is more vulnerable to theft as a potential intruder only needs to discover the security vulnerabilities of that particular file system.        
Similarly, conventional systems that utilize cloud services for storage tend to store related application data with a single cloud-service provider. This approach suffers from the same security vulnerability, because a potential intruder only needs to be able to breach the information security barriers of that cloud provider.
Use of a single cloud-service provider for storage of all data also heightens the risk of loss of access whenever there's an outage at that provider, and a commonly used approach against a single-provider outage involves replicating data across multiple cloud providers. Replication not only increases storage costs, but also increases the number of attack vectors by allowing a potential intruder access to data by breaching any one of the providers.
Considering the limitations described above, it is desirable to provide an improved storage scheme having reduced storage requirements as well as improved security and fault-tolerance.